package com.tool.app.config;

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import java.io.IOException;
import java.sql.Date;

/**
 * 强制按 UTC 解析 java.sql.Date
 * 不信 JVM 时区，不信 ObjectMapper 时区，只信字符串本身
 */
public class SqlDateUtcDeserializer extends JsonDeserializer<java.sql.Date> {
    @Override
    public java.sql.Date deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
        String text = p.getValueAsString();
        if (text == null || text.trim().isEmpty()) {
            return null;
        }
        try {
            // 🔥 核心：直接 valueOf，不依赖任何时区转换
            return java.sql.Date.valueOf(text);
        } catch (IllegalArgumentException e) {
            throw new IOException("无法解析日期: " + text, e);
        }
    }
}